package com.cn.wanxi.util;

import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.servlet.Child;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 创建报名需要注意：
 * 命名规则：
 * 包名：全部小写，而且每一个包都是一个单词的意思
 * 继承
 * 实现：
 * Person类：  对象 什么是对象？
 * <p>
 * 对象：状态：头发：脸型： 衣服  裤子  脖子  外貌形态   特征 名词
 * 动词：行为   喝水  敲代码 跑步  。。。。
 * <p>
 * 单个对象： 一群：类
 * 类 就是对对象的抽象描述
 * Java类   生活中对象
 * 属性       特征
 * 方法       行为
 * 类 应该包含哪些对象？
 * 包
 * 类声明  类名  全部以英文字符  大驼峰式命名规则
 * 变量 小驼峰  UserModel   userModel
 * 构造方法
 * 方法   小驼峰  UserModel   userModel
 * 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格
 * <p>
 * 除了类名，大驼峰，其他小驼峰
 * 包名  全小写   wan.xi
 * 产量全大写   WAN_XI
 * <p>
 * <p>
 * 变量：可变的量
 * 描述属性
 * 属性的定义？
 * 数据类型 变量名称 值  ； static 访问修饰符 赋值 =
 * 访问修饰符   非访问修饰符   数据类型   变量名   =  值  ；
 * private static String  name="aa"; 字面量
 * 权限修饰符
 * public
 * private
 * protected
 * 默认不写
 * 特征修饰符
 * <p>
 * 变量类型？
 * 局部变量
 * 全局变量
 * 静态变量
 * 类变量
 * <p>
 * static
 * 目的：创建唯一一个对象   调用引用简单 Class.变量名/方法名
 * 非静态的变量调用   对象.变量名/方法名
 * final  最终的，不可变的  可以修饰类，变量，方法
 * final、finally与finalize的区别？
 * final 类不能被继承，没有类能够继承 final 类的任何特性。
 * final 表示"最后的、最终的"含义，变量一旦赋值后，不能被重新赋值。
 * 被 final 修饰的实例变量必须显式指定初始值。
 * 父类中的 final 方法可以被子类继承，但是不能被子类重写。
 * <p>
 * 声明 final 方法的主要目的是防止该方法的内容被修改。
 * <p>
 * 重写和重载？
 * <p>
 * abstract  抽象
 * synchronized
 * volatile
 * native   调用其他语言的方法
 * Java的数据类型：
 * 基本数据类型
 * 整型      byte        short        int          long
 * 字节数    1            2            4             8
 * 范围     -128~127
 * 有符号位 无符号位
 * 默认值
 * 浮点型   float  double
 * <p>
 * 布尔型   boolean
 * 1个bit位
 * 字符型  char
 * 引用数据类型
 * 对象：属性
 * 强引用
 * 弱引用
 * 软引用
 * 虚引用
 * 注解
 * 接口
 * 枚举
 * 数组
 * 集合
 * <p>
 * 一个完整的方法定义
 * 权限修饰符  特征修饰符   返回值类型   方法名（参数）异常{
 * return  “”；
 * }
 * 代码块和静态代码块和构造方法   其实是特殊的方法
 * {} static {} Test(){}
 * 只要是static  无论方法或者属性 都会在内存里面开辟空间
 * 首先执行静态代码块(按照顺序执行)   然后 代码块  然后  构造方法
 * 类的加载顺序？
 * <p>
 * <p>
 * java 层次    三层架构
 * 页面控制层  servlet       返回数据和页面相关的数据都应该写在页面控制层
 * 服务逻辑层  service       写逻辑代码，封装数据
 * 数据实现层  dao          将数据保存到dao里面
 * 实体层  model            将所有数据保存到model   依赖关系  容器
 * util  工具包 公共的类
 */
public class Test {
    private String privateName = "privateName";
    public String publicName = "publicName";
    protected String protectedName = "protectedName";
    static String staticName = "staticName";
    String name = "name";

    Test() {
        System.out.println("构造方法");
    }

    {
        System.out.println("代码块");
    }

    static {
        System.out.println("static代码块");
    }

//    static Person person = new Person();
//List<Object> list=new ArrayList<>();

    //      static  {
//        出现异常  直接try  不要  throws；
//        日志文件  servlet---service---dao--jdbc--db
//        try {
//            int a=1/0;
//            String aa=null;
//            aa.toString();
//
//        }catch (Exception e){
//
//        }
//        System.out.println(11);
//        return "";
//    }
//private static void aa(String ...a){
//
//}
    //    byte a ;
//    String aa="afdsa";
//     int aaa=11;
//    可变参数的一个数组
    static String[] aa = new String[2];
    static String[] temp = {};

    private static String[] getArray(String value) {
        aa = temp;

        temp = new String[temp.length + 1];
        for (int i = 0; i < aa.length; i++) {
            temp[i] = aa[i];
        }
        temp[aa.length] = value;
        return temp;
    }

    public static void main(String[] args) {

        while (true) {
            Scanner scanner = new Scanner(System.in);
            String in = scanner.next();
            String[] array = getArray(in);
            for (String a : array
            ) {
                System.out.print(a);
            }
        }
//        手写一个可变长度的数组
//        String aa = "2176490";
//        for (int i = 0; i < aa.length(); i++) {
//            if (i % 2 == 0) {
//                System.out.println(aa.charAt(i));
//            }
//        }
//       aa("a","b","aaaa");
//        new Test();
//        String[] aa={"aa","af"};
//        Integer[] dd=new Integer[5];
//        dd[0]="aa";
//        String bb []={};
//        String  [] bb={};

//        Integer a=1;//包装类
//        Character b=1;
//        Float ff=0F;
//        Double dd=0D;
//        Long ll=11L;
//        装  封装  基本---引用类型
//        ff=b;
//        b= (char) ff;
//        0
//        boolean c=true;
//        a=c;
//        c=a;
//        b= (char) a;
//        a=b;
//        整数属于int  小数属于double

//        System.out.println(protectedName);
//Test test=new Test();
//test.
//        Child person=new Child();
//        person.isEat(1);
//        System.out.println(test.a);
//        Child child=new Child();
//        Test test=new Test(child);
    }

}
